import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import vueDevTools from 'vite-plugin-vue-devtools'
import path from 'node:path'
// const additionalData = require('inl-ui/dist/theme').default
// https://vite.dev/config/
export default defineConfig({
  plugins: [vue(), vueJsx(), vueDevTools()],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url)), // 设置路径别名
    },
  },
  build: {
    outDir: 'dist',
    sourcemap: true,
    rollupOptions: {
      output: {
        entryFileNames: 'js/[name].[hash].js', // 打包后文件名
        chunkFileNames: 'js/[name].[hash].js', // 打包后文件名
        assetFileNames: 'assets/[name].[hash].[ext]', // 打包后文件名
      },
    },
  },
  server: {
    host: 'localhost', // 服务器地址
    port: 8080, // 服务器端口
    strictPort: true, // 如果端口被占用，则退出进程
    open: true, // 是否自动打开浏览器
    cors: true, // 是否启用CORS
    proxy: {
      // 配置跨域
      '/api': {
        // 需要跨域的路径 项目使用的微服务 不同的项目会有不同的路径 根据前缀来区分
        target: 'http://localhost:8080', // 目标接口域名
        changeOrigin: true, // 是否跨域
        rewrite: (path) => path.replace(/^\/api/, ''), // 重写路径
      },
    },
  },
  css: {
    preprocessorOptions: {
      less: {
        javascriptEnabled: true,
        // additionalData: `@import "./src/styles/variables.less";`, // 全局变量
        additionalData: `@import "${path.resolve(__dirname, 'src/styles/main.less')}";
        `,
      },
    },
  },
  // qiankun 特定配置
  base: '/', // 确保基础路径正确
  optimizeDeps: {
    include: ['vue', 'vue-router', 'pinia'], // 预构建依赖
  },
})
